#include <string.h>
#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int getch()
{
	int c = 0;
	struct termios org_opts, new_opts;
	int res = 0;
	
	// store old settings 
	tcgetattr(STDIN_FILENO, &org_opts);
	
	// set new terminal parms 
	memcpy(&new_opts, &org_opts, sizeof(new_opts));
	new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
	tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
	c = getchar();
	
	// restore old settings
	res = tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);
	return c;
}

int main()
{
	int c = getch();
	printf("You just input a character '%c'.\n", c);
}
